<?php

namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use App\Models\Post;
use App\Models\Category;
use App\Models\Tag;
use App\Services\PostService;
use Illuminate\Http\Request;
use Inertia\Inertia;

/**
 * 前台博客控制器
 * 
 * 职责：
 * - 处理前台博客相关的HTTP请求
 * - 调用 PostService 处理业务逻辑
 * - 返回视图
 */
class BlogController extends Controller
{
    /**
     * 文章服务
     * 
     * @var PostService
     */
    protected PostService $postService;

    /**
     * 构造器
     */
    public function __construct(PostService $postService)
    {
        $this->postService = $postService;
    }
    /**
     * 显示博客首页
     */
    public function index(Request $request)
    {
        // 调用服务层获取已发布的文章列表
        $posts = $this->postService->getPublishedPosts(
            $request->only(['search']),
            9
        );

        return Inertia::render('Blog/Index', [
            'posts' => $posts,
            'filters' => [
                'search' => $request->input('search'),
            ],
        ]);
    }

    /**
     * 显示归档页面
     */
    public function archive()
    {
        // 调用服务层获取归档数据
        $archives = $this->postService->getArchives();
            
        return Inertia::render('Blog/Archive', [
            'archives' => $archives
        ]);
    }

    /**
     * 显示项目页面
     */
    public function projects()
    {
        $projects = [
            [
                'name' => 'Spotlight 博客',
                'description' => 'Laravel + Inertia.js 打造的内容创作与展示平台，提供系列、归档、搜索等完整体验。',
                'link' => [
                    'href' => route('blog.home'),
                    'label' => 'blog.home',
                ],
                'logo' => 'from-orange-400 to-amber-500',
            ],
            [
                'name' => 'DraftSync',
                'description' => '支持多人实时协同的富文本草稿服务，提供版本对比与自动保存策略。',
                'link' => [
                    'href' => route('blog.home'),
                    'label' => 'draftsync.app',
                ],
                'logo' => 'from-teal-400 to-cyan-500',
            ],
            [
                'name' => 'Idea Capture',
                'description' => '面向创作者的灵感收集工具，随时记录并同步到知识库，支持 Markdown 与标签管理。',
                'link' => [
                    'href' => 'https://github.com/',
                    'label' => 'github.com/idea-capture',
                ],
                'logo' => 'from-purple-400 to-pink-500',
            ],
            [
                'name' => 'Spotlight UI',
                'description' => '基于 Tailwind CSS 的设计系统，封装常用组件与动效，帮助团队快速搭建一致化界面。',
                'link' => [
                    'href' => 'https://github.com/',
                    'label' => 'github.com/spotlight-ui',
                ],
                'logo' => 'from-blue-400 to-indigo-500',
            ],
            [
                'name' => 'LunaDB',
                'description' => '轻量级同步数据库，专注离线优先与多端一致，适合写作与知识管理场景。',
                'link' => [
                    'href' => 'https://github.com/',
                    'label' => 'github.com/lunadb',
                ],
                'logo' => 'from-emerald-400 to-green-500',
            ],
            [
                'name' => 'Nebula CI',
                'description' => '针对多仓库管理的持续集成平台，实现配置即代码、并行构建与自动部署。',
                'link' => [
                    'href' => 'https://github.com/',
                    'label' => 'github.com/nebula-ci',
                ],
                'logo' => 'from-cyan-400 to-blue-500',
            ],
        ];

        return Inertia::render('Blog/Projects', [
            'projects' => $projects,
        ]);
    }

    /**
     * 显示关于页面
     */
    public function about()
    {
        // 从数据库获取关于页面内容
        $pageContent = \App\Models\PageContent::getByKey('about');
        
        // 如果数据库中没有内容，使用默认数据
        $about = $pageContent ? $pageContent->content : [
            'name' => '花生',
            'role' => '开发',
            'avatar' => 'https://ui-avatars.com/api/?name=%E8%8A%B1%E7%94%9F&color=7F9CF5&background=EBF4FF',
            'bio' => '热爱技术，专注于Web开发和用户体验设计。擅长Vue.js、Laravel等全栈开发技术。',
            'content' => '
                <h2>关于我</h2>
                <p>你好！我是花生，一名充满激情的全栈开发工程师。在过去的几年里，我专注于Web应用开发，特别是Vue.js和Laravel技术栈。</p>
                
                <h2>工作经历</h2>
                <p>目前在一家科技公司担任高级开发工程师，负责公司核心产品的开发和维护工作。在此之前，我曾在多家互联网公司担任全栈开发工程师，积累了丰富的项目经验。</p>
                
                <h2>技术理念</h2>
                <p>我始终相信，优秀的技术源于对细节的不懈追求。在开发过程中，我特别注重代码质量、用户体验和性能优化。同时，我也热衷于学习和分享新技术，经常参与开源社区的讨论和贡献。</p>
            ',
            'social_links' => [
                [
                    'name' => 'GitHub',
                    'url' => 'https://github.com/yourusername',
                    'icon' => 'GitHubIcon'
                ],
                [
                    'name' => '微博',
                    'url' => 'https://weibo.com/yourusername',
                    'icon' => 'WeiboIcon'
                ],
                [
                    'name' => '知乎',
                    'url' => 'https://zhihu.com/people/yourusername',
                    'icon' => 'ZhihuIcon'
                ]
            ],
            'skills' => [
                [
                    'name' => '前端开发',
                    'description' => 'Vue.js, React, TypeScript, Tailwind CSS'
                ],
                [
                    'name' => '后端开发',
                    'description' => 'Laravel, Node.js, PHP, MySQL'
                ],
                [
                    'name' => '开发工具',
                    'description' => 'Git, Docker, VS Code, Webpack'
                ],
                [
                    'name' => 'UI/UX设计',
                    'description' => 'Figma, Adobe XD, 用户体验设计'
                ],
                [
                    'name' => '项目管理',
                    'description' => 'Agile, Scrum, JIRA, 团队协作'
                ],
                [
                    'name' => '系统架构',
                    'description' => '微服务, API设计, 性能优化'
                ]
            ]
        ];
        
        // 添加HTML内容
        if ($pageContent && $pageContent->html_content) {
            $about['content'] = $pageContent->html_content;
        }

        return Inertia::render('Blog/About', [
            'about' => $about
        ]);
    }

    /**
     * 显示前台创建文章页面
     */
    public function create()
    {
        return Inertia::render('Author/Posts/Editor/ArticleEditor', [
            'categories' => Category::orderBy('name')->get(),
            'tags' => Tag::orderBy('name')->get(),
            'user' => auth()->user()
        ]);
    }

    /**
     * 显示前台编辑文章页面
     */
    public function edit(Post $post)
    {
        // 加载文章关联的标签
        $post->load(['tags']);
        
        return Inertia::render('Author/Posts/Editor/ArticleEditor', [
            'post' => $post,
            'categories' => Category::orderBy('name')->get(),
            'tags' => Tag::orderBy('name')->get(),
            'user' => auth()->user()
        ]);
    }

    /**
     * 显示前台文章预览页面
     */
    public function preview()
    {
        return Inertia::render('Blog/Posts/Preview', [
            'categories' => Category::orderBy('name')->get(),
        ]);
    }
} 